const express = require('express');
const cors = require('cors');
const rateLimit = require('express-rate-limit');
const path = require('path');
require('dotenv').config();

// 在应用启动时只打印必要信息
console.log('服务器配置:');
console.log(`- 端口: ${process.env.PORT || 5000}`);
console.log(`- 数据目录: ${process.env.DATA_DIR || 'data'}`);
console.log(`- 最大记录数: ${process.env.MAX_RECORDS || 1000}`);

const app = express();
const port = process.env.PORT || 5000;

// 中间件
app.use(express.json());
app.use(cors({
    origin: '*',
    methods: ['GET', 'POST', 'OPTIONS'],
    allowedHeaders: ['Content-Type', 'X-API-Token']
}));
app.use(express.static('public'));

// 速率限制
const limiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15分钟
  max: 100 // 限制每个IP 100个请求
});
app.use('/api', limiter);

// 视图引擎
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));

// 路由
const ipRouter = require('./routes/ip');
app.use('/', ipRouter);

// 首页路由
app.get('/', (req, res) => {
  res.render('index');
});

// 错误处理
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).json({ error: '服务器内部错误' });
});

app.listen(port, () => {
    console.log(`服务器已启动: http://localhost:${port}`);
}); 